import { apiClient } from './axios'

export const materialsApi = {
  /**
   * 获取材料列表
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getMaterials(params: any = {}) {
    return apiClient.get('/materials', { params })
  },

  /**
   * 获取材料详情
   * @param {string|number} id - 材料ID
   * @returns {Promise}
   */
  getMaterial(id: string | number) {
    return apiClient.get(`/materials/${id}`)
  },

  /**
   * 创建材料
   * @param {Object} data - 材料数据
   * @returns {Promise}
   */
  createMaterial(data: any) {
    return apiClient.post('/materials', data)
  },

  /**
   * 更新材料
   * @param {string|number} id - 材料ID
   * @param {Object} data - 更新数据
   * @returns {Promise}
   */
  updateMaterial(id: string | number, data: any) {
    return apiClient.put(`/materials/${id}`, data)
  },

  /**
   * 删除材料
   * @param {string|number} id - 材料ID
   * @returns {Promise}
   */
  deleteMaterial(id: string | number) {
    return apiClient.delete(`/materials/${id}`)
  },

  /**
   * 更新材料库存
   * @param {string|number} id - 材料ID
   * @param {Object} data - 库存调整数据
   * @param {string} data.operation - 操作类型 ('in' | 'out')
   * @param {number} data.quantity - 调整数量
   * @param {string} data.reason - 调整原因
   * @returns {Promise}
   */
  updateStock(id: string | number, data: any) {
    return apiClient.post(`/materials/${id}/stock`, data)
  },

  // 获取材料分类列表
  getMaterialCategories() {
    return apiClient.get('/materials/categories')
  },

  /**
   * 获取材料库存历史记录
   * @param {string|number} id - 材料ID
   * @returns {Promise}
   */
  getStockHistory(id: string | number) {
    return apiClient.get(`/materials/${id}/stock/history`)
  },

  /**
   * 获取材料统计数据
   * @returns {Promise}
   */
  getMaterialStats() {
    return apiClient.get('/materials/stats')
  }
}